<?php
declare (strict_types = 1);

namespace app\validate\common\course;

use app\model\communal\CourseChapterModel;
use think\Validate;

class ChapterValidate extends Validate
{
    /**
     * 定义验证规则
     * 格式：'字段名' =>  ['规则1','规则2'...]
     *
     * @var array
     */
    protected $rule = [
        'id' => ['require', 'number', 'gt:0'],
        'course_id' => ['require', 'number', 'gt:0'],
        'name' => ['require', 'max:100'],

        'page' => ['number', 'gt:0'],
        'page_size' => ['number', 'gt:0'],
    ];

    protected $field = [
        'course_id' => '课程',
        'name' => '章名称',

        'page' => '当前页数',
        'page_size' => '每页条数',
    ];

    /**
     * 定义错误信息
     * 格式：'字段名.规则名' =>  '错误信息'
     *
     * @var array
     */
    protected $message = [];

    /**
     * 场景
     * @var array
     */
    protected $scene = [
        'index' => ['page', 'page_size'],
    ];

    /**
     * scene save
     *
     * @return $this
     */
    public function sceneSave()
    {
        return $this->only(CourseChapterModel::$saveColumn);
            // ->append('name', 'checkNameUnique:save');
    }

    /**
     * scene update
     *
     * @return $this
     */
    public function sceneUpdate()
    {
        return $this->only(CourseChapterModel::$updateColumn);
            // ->append('name', 'checkNameUnique:update');
    }

    /**
     * scene update
     *
     * @return $this
     */
    public function sceneItem()
    {
        return $this->only(['id', 'name'])
            ->remove('name', 'require');
            // ->append('name', 'checkNameUnique:update');
    }

    // /**
    //  * 名称唯一验证
    //  *
    //  * @param $value
    //  * @param $rule
    //  * @param $data
    //  * @return bool|mixed
    //  */
    // public function checkNameUnique($value, $rule, $data)
    // {
    //     $data['delete_at'] = 0;
    //     if ('save' === $rule) {
    //         $check = $this->unique($value, CourseChapterModel::class . ',name^delete_at', $data, 'name^delete_at');
    //     } else {
    //         $check = $this->unique($value,CourseChapterModel::class . ',name^delete_at,' . $data['id'], $data, 'name^delete_at');
    //     }
    //
    //     if (true !== $check) {
    //         return lang(':attribute has exists');
    //     }
    //
    //     return true;
    // }
}
